package routes

//作为路由的入口文件

import (
	"github.com/gin-gonic/gin"
	v1 "goblog/api/v1"
	"goblog/middleware"
	"goblog/utils"
)

// 这个go中判断一个函数是否共有是看这个包的首字母是否大写
// 如果是大写就是公用的在项目内所有文件都可以引用
// 如果是小写的话就是私有的只能在自己的包内引用

func InitRouter() {
	gin.SetMode(utils.AppMode) //引入setting.go
	r := gin.New()
	r.Use(middleware.Logger())
	r.Use(gin.Recovery()) //记录每一个请求的日志

	//Default和New都可以用于初始化但是Default会自动添加两个中间件

	ahth := r.Group("api/v1") //分类这里的都需要中间件
	ahth.Use(middleware.JwtToken())

	{
		//User模块的路由接口
		ahth.PUT("user/:id", v1.EditUser)
		ahth.DELETE("user/:id", v1.DeleteUser)
		// Category模块的路由接口
		ahth.POST("category/add", v1.AddCategory)
		ahth.PUT("category/:id", v1.EditCate)
		ahth.DELETE("category/:id", v1.DeleteCate)
		//Article模块的路由接口
		ahth.POST("article/add", v1.AddArticle)
		ahth.PUT("article/:id", v1.EditArt)
		ahth.DELETE("article/:id", v1.DeleteArt)
		//上传文件
		ahth.POST("upload", v1.UpLoad)

	}
	router := r.Group("api/v1") //GET不需要中间件
	{
		router.POST("user/add", v1.AddUser)
		router.GET("users", v1.GetUsers)
		router.GET("category", v1.GetCate)
		router.GET("article", v1.GetArt)
		router.GET("article/list/:id", v1.GetCateArt)
		router.GET("article/info/:id", v1.GetArtInfo)
		router.POST("login", v1.Login)
	}

	_ = r.Run(utils.HttpPort)
}
